import { observe } from './observe/index'

export function initState(vm) {
    const opts = vm.$options
    // vue的数据来源 属性、方法、数据、计算属性、监听
    if(opts.props){
        initProps(vm)
    }
    if(opts.methods){
        initMethods(vm)
    }
    if(opts.data){
        initData(vm)
    }
    if(opts.computed){
        initComputed(vm)
    }
    if(opts.watch){
        initWatch(vm)
    }

}

function initProps(vm){}
function initMethods(vm){}
function initData(vm){
    let data = vm.$options.data
    data = vm._data = typeof data === 'function' ? data.call(vm) : data
    // 对象劫持 因为用户修改某一个属性，得到通知才能去自动刷新页面
    // MVVM 数据变化驱动视图改变

    // Object.defineProperty() 给属性增加get方法和set方法
    observe(data) // 响应式原理
}
function initComputed(vm){}
function initWatch(vm){}